﻿/*
 * 设计模式 - 简单工厂, 工厂模式, 抽象工厂  工厂三部曲
 * 目的: 隐藏创建对象的细节,根据条件创建想要的实例
 */
using _04_简单工厂;

#region 简单工厂
//var dao = 简单工厂.Factory.Create("Sql");
//using var db = dao.GetConnection();
//db.Open();

/*
 * 缺点:
 * 当连接类型多的时候,我需要不断改进Factory方法,来满足需求的改动, 所以有了抽象工厂
 */
#endregion


#region 工厂模式

//var facotry = new 工厂模式.MsSqlFactory();
//var dao = facotry.Create();
//using var db = dao.GetConnection();
//db.Open();

#endregion


#region 抽象工厂

var factory = new 抽象工厂.ERP();
//使用MSSQL进项CURD之后
using var MsSqlDao = factory.CreateMsSqlDao().GetConnection();
MsSqlDao.Open();
//继续使用MYSQL进行CURD ... 
using var MySqlDao = factory.CreateMySqlDao().GetConnection();
MySqlDao.Open();

/*
 * 抽象工厂和工厂模式的区别:
 * 抽象工厂应该是一个更大的事务的内容,是需要做一系列的事情
 * 与普通的抽象工厂颗粒度不一样
 */
#endregion